import java.util.List;
import java.util.Map;

/**
 * Abstract class responsible for Input/Output operations with loading and 
 * saving the Markov Model information
 */
public abstract class MarkovIO
{
	/**
	 * Get the probability table of a markov state.
	 * 
	 * @param states <code>List&lt;MarkovState&gt;</code>
	 * @return <code>MarkovPTable</code>
	 */
	public abstract MarkovPTable getPTable(MarkovStateSet states);


	/**
	 * Stores the given PTable.
	 * 
	 * @param states <code>MarkovStateSet</code> states to retrieve from the TreeMap
	 * @param ptable <code>MarkovPTable</code> PTable to be updated.
	 * @return PTable <code>MarkovPTable</code> to link to the MarkovStates states
	 */
	protected abstract MarkovPTable setPTable(MarkovStateSet states, MarkovPTable ptable);
}
